package com.think.common.cons;

/**
 * <p>
 * 正则表达式常量
 * </p>
 *
 * @author: xwj
 * @data: 2019-04-06
 */
public interface Regex {

    /**
     * 正则表达式：验证用户名（4-16个中英文字母）
     */
    String USERNAME = "^[a-zA-Z]\\w{4,16}$";

    /**
     * 正则表达式：验证密码 (必须6-16位字母或者数字组合)
     */
    String PASSWORD = "^[0-9a-zA-Z]{6,16}$";

    /**
     * 正则表达式：验证密码 (必须6-14位字母与数字组合)
     */
    String PASSWORD2 = "^(?!([a-zA-Z]+|\\d+)$)[a-zA-Z\\d]{6,14}$";

    /**
     * 正则表达式：验证手机号
     */
    String PHONE = "^1[3,4,5,7,8]\\d{9}$";

    /**
     * 正则表达式：验证邮箱
     */
    String EMAIL = "^([a-z0-9A-Z]+[-|.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$";

    /**
     * 正则表达式：验证汉字
     */
    String CHINESE = "^[\u4e00-\u9fa5],*$";

    /**
     * 正则表达式：验证身份证
     */
    String ID_CARD = "(^\\d{18}$)|(^\\d{15}$)";

    /**
     * 正则表达式：验证URL
     */
    String URL = "http(s)?://([\\w-]+\\.)+[\\w-]+(/[\\w- ./?%&=]*)?";

    /**
     * 正则表达式：验证IP地址
     */
    String IP_ADDR = "(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)";

    /**
     * 正则表达式：验证数字
     */
    String NUMBER = "[0-9]*";

    /**
     * 正则表达式：验证非零正整数
     */
    String NON_ZERO_NUMBER = "^[1-9]\\d*$";

    /**
     * 正则表达式：验证图片格式
     */
    String IMAGE = "(?i)(jpg|jpeg|png|gif)$";

    /**
     * 正则表达式：字符串1~256
     */
    String CHAR_ONE_TO_TWO_FIVE_SIX = "^(.|\\n){1,256}$";

    /**
     * 正则表达式：字符串0~256
     */
    String CHAR_ZERO_TO_TWO_FIVE_SIX = "^(.|\\n){0,256}$";

    /**
     * 正则表达式：数字1~18个位正整数
     */
    String NUMBER_ONE_TO_ONE_EIGHT = "^[1-9]{1}\\d{0,17}$";

    /**
     * 正则表达式：数字1~18个整数(包括0)
     */
    String NUMBER_ONE_TO_ONE_EIGHT_AND_ZERO = "^[0-9]{1}\\d{0,17}$";

    /**
     * 正则表达式：数字1~8个位正整数
     */
    String NUMBER_ONE_TO_EIGHT = "^[1-9]{1}\\d{0,8}$";

    /**
     * 正则表达式：验证经度
     */
    String IS_LONGITUDE = "^[\\-\\+]?(0(\\.\\d{1,10})?|([1-9](\\d)?)(\\.\\d{1,10})?|1[0-7]\\d{1}(\\.\\d{1,10})?|180\\.0{1,10})$";

    /**
     * 正则表达式：验证纬度
     */
    String IS_LATITUDE = "^[\\-\\+]?((0|([1-8]\\d?))(\\.\\d{1,10})?|90(\\.0{1,10})?)$";

    /**
     * 正则表达式：验证数字 2~8个位正整数
     */
    String NUMBER_TWO_TO_EIGHT = "^[1-9]{1}[0-9]{1,8}$";
}
